/**
 * 文件名：login.js
 * 功能：小程序登录页面逻辑
 * 作用：处理用户登录和注册
 * 模块关系：
 *   - 使用 auth.js 的登录/注册接口
 *   - 登录成功后跳转到应用列表页
 * 作者：白永康
 * 学号：2501210209
 */
const { login, register } = require('../../data/auth')

Page({
  data: {
    mode: 'login', // 'login' 或 'register'
    username: '',
    password: '',
    confirmPassword: '',
    loading: false
  },

  /**
   * 输入用户名
   */
  onUsernameInput(e) {
    this.setData({ username: e.detail.value })
  },

  /**
   * 输入密码
   */
  onPasswordInput(e) {
    this.setData({ password: e.detail.value })
  },

  /**
   * 输入确认密码
   */
  onConfirmPasswordInput(e) {
    this.setData({ confirmPassword: e.detail.value })
  },

  /**
   * 提交表单
   */
  async onSubmit() {
    const { mode, username, password, confirmPassword } = this.data

    // 验证用户名
    if (!username || username.length < 3) {
      wx.showToast({
        title: '用户名至少3个字符',
        icon: 'none'
      })
      return
    }

    // 验证密码
    if (!password || password.length < 6) {
      wx.showToast({
        title: '密码至少6个字符',
        icon: 'none'
      })
      return
    }

    // 注册时验证确认密码
    if (mode === 'register' && password !== confirmPassword) {
      wx.showToast({
        title: '两次密码不一致',
        icon: 'none'
      })
      return
    }

    this.setData({ loading: true })

    try {
      if (mode === 'login') {
        await login(username, password)
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        })
      } else {
        await register(username, password)
        wx.showToast({
          title: '注册成功',
          icon: 'success'
        })
      }

      // 延迟跳转，让用户看到成功提示
      setTimeout(() => {
        // 返回上一页或跳转到应用列表
        const pages = getCurrentPages()
        if (pages.length > 1) {
          wx.navigateBack()
        } else {
          wx.switchTab({
            url: '/pages/apps/list'
          })
        }
      }, 1500)

    } catch (error) {
      wx.showToast({
        title: error.message || (mode === 'login' ? '登录失败' : '注册失败'),
        icon: 'none',
        duration: 2000
      })
    } finally {
      this.setData({ loading: false })
    }
  },

  /**
   * 切换登录/注册模式
   */
  toggleMode() {
    const newMode = this.data.mode === 'login' ? 'register' : 'login'
    this.setData({
      mode: newMode,
      confirmPassword: ''
    })
  }
})
